# 自媒体登录页面的对象库层
import allure
from selenium.webdriver.common.by import By

from Base.MediaBase.baseMedia import BasePage, BaseHandle


class LoginPage(BasePage):
    def __init__(self):
        super().__init__()
        # 定义手机号的位置
        self.mobile = By.XPATH, "//*[@placeholder='请输入手机号']"
        # 定义验证码的位置
        self.code = By.XPATH, "//*[@placeholder='验证码']"
        # 定义登录按钮的位置
        self.login_button = By.CSS_SELECTOR, ".el-button--primary"

    # 获取手机号的位置
    def find_mobile(self):
        return self.get_element(self.mobile)

    # 获取验证码的位置
    def find_code(self):
        return self.get_element(self.code)

    #     获取登录按钮的位置
    def find_login_button(self):
        return self.get_element(self.login_button)


# 自媒体登录页面的操作层
class LoginHandle(BaseHandle):
    def __init__(self):
        self.login_page = LoginPage()

    # 输入手机号的操作
    # 在allure中显示操作步骤
    @allure.step(title="输入手机号")
    def send_mobile(self, mobile):
        self.input_text(self.login_page.find_mobile(), mobile)

    # 输入验证码的操作
    @allure.step(title="输入验证码")
    def send_code(self, code):
        self.input_text(self.login_page.find_code(), code)

    # 点击登录的操作
    @allure.step(title="点击登录按钮")
    def click_login_button(self):
        self.login_page.find_login_button().click()


# 自媒体登录页面的业务层
class LoginProxy:
    def __init__(self):
        self.login_handle = LoginHandle()

    # 登录操作
    def login(self, mobile, code):
        self.login_handle.send_mobile(mobile)
        self.login_handle.send_code(code)
        self.login_handle.click_login_button()
